package cn.topevery.garden.entity.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.topevery.garden.entity.po.GreFile;
import cn.topevery.garden.entity.serializer.GeometrySerializer;
import com.alibaba.fastjson.annotation.JSONField;
import hw.topevery.framework.dto.PointDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.locationtech.jts.geom.Geometry;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * 房屋信息表 视图
 *
 * @author code-generate
 * @date 2022-02-14
 */
@Data
@ApiModel(value = "HouseInfo 视图", description = "房屋信息表 视图")
public class HouseInfoVO implements Serializable{
    /**
     * 自增id
     */
    private Integer id;

        /**
     * 房屋ID
     */
    @ApiModelProperty(value = "房屋ID")
    @Excel(name = "房屋ID", orderNum = "0")
    private String houseId;

    /**
     * 房屋类型
     */
    @ApiModelProperty(value = "房屋类型")
    @Excel(name = "房屋类型", orderNum = "0")
    private Integer houseType;

    /**
     * 所属绿地id
     */
    @ApiModelProperty(value = "所属绿地id")
    @Excel(name = "所属绿地id", orderNum = "0")
    private String landCode;

    /**
     * 户主
     */
    @ApiModelProperty(value = "户主")
    @Excel(name = "户主", orderNum = "0")
    private String householder;

    /**
     * 户主联系方式
     */
    @ApiModelProperty(value = "户主联系方式")
    @Excel(name = "户主联系方式", orderNum = "0")
    private String telephone;

    /**
     * 建设开始时间
     */
    @ApiModelProperty(value = "建设开始时间")
    @Excel(name = "建设开始时间", orderNum = "0")
    private LocalDate startDate;

    /**
     * 建设开始时间
     */
    @ApiModelProperty(value = "建设开始时间")
    @Excel(name = "建设开始时间", orderNum = "0")
    private LocalDate endDate;

    /**
     * 面积
     */
    @ApiModelProperty(value = "面积")
    @Excel(name = "面积", orderNum = "0")
    private Double measure;

    /**
     * 结构图
     */
    @ApiModelProperty(value = "结构图")
    @Excel(name = "结构图", orderNum = "0")
    private String structureChart;

    /**
     * 其他附件
     */
    @ApiModelProperty(value = "其他附件")
    @Excel(name = "其他附件", orderNum = "0")
    private String otherFile;

    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    @Excel(name = "描述", orderNum = "0")
    private String desc;

    /**
     * 房屋性质
     */
    @ApiModelProperty(value = "房屋性质")
    @Excel(name = "房屋性质", orderNum = "0")
    private String nature;

    /**
     * 朝向
     */
    @ApiModelProperty(value = "朝向")
    @Excel(name = "朝向", orderNum = "0")
    private String orientation;

    /**
     * 高度
     */
    @ApiModelProperty(value = "高度")
    @Excel(name = "高度", orderNum = "0")
    private Double height;

    /**
     * 是否归档 0 否 1 是 
     */
    @ApiModelProperty(value = "是否归档 0 否 1 是 ")
    @Excel(name = "是否归档 0 否 1 是 ", orderNum = "0")
    private Integer recordStatus;

    /**
     * 归档时间
     */
    @ApiModelProperty(value = "归档时间")
    @Excel(name = "归档时间", orderNum = "0")
    private LocalDate recordDate;

    @ApiModelProperty(value = "附件")
    private List<GreFile> fileList;

    @ApiModelProperty(value = "地址")
    @Excel(name = "地址", orderNum = "0")
    private String address;

    @ApiModelProperty(value = "经度")
    @Excel(name = "经度", orderNum = "0")
    private Float lng;

    @ApiModelProperty(value = "纬度")
    @Excel(name = "纬度", orderNum = "0")
    private Float lat;

    @ApiModelProperty(value = "范围")
    @Excel(name = "范围", orderNum = "0")
    @JSONField(serializeUsing = GeometrySerializer.class, deserializeUsing = GeometrySerializer.class)
    private Geometry mapRanges;

    /**
     * 计算空间数据
     */
    @ApiModelProperty(value = "计算空间数据")
    @Excel(name = "计算空间数据", orderNum = "0")
    private String geoWkt;

    @ApiModelProperty(value = "范围点信息")
    private List<List<PointDto>> mapRangesPoints;
}
